1619F - Let's Play the Hat - CodeForces Solution


brute force constructive algorithms greedy math *2000

Please click on ads to support us..

C++ Code:

#include <cmath>
#include <cstring>
#include <array>
#include <deque>
#include <map>
#include <queue>
#include <set>
#include <vector>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <bitset>
#include <random>
#include <string>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N = 2e5 + 3;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T;
    cin >> T;
    for (int kase = 1; kase <= T; ++kase)
    {
        int n, m, k;
        cin >> n >> m >> k;
        if (kase != 1)
            cout << "\n";
        if (n % m == 0)
        {
            m = n / m;
            for (int i = 0; i < k; ++i)
            {
                for (int j = 1; j <= n; j += m)
                {
                    cout << m;
                    for (int l = 0; l < m; ++l)
                        cout << " " << j + l;
                    cout << "\n";
                }
            }
            continue;
        }
        int rem = n % m, d = n / m;
        for (int i = 0,t=0; i < k ; ++i)
        {
            int man = t%n;
            for (int j = 0; j < rem; ++j)
            {
                cout << d + 1;
                for (int l = 0; l <= d; ++l)
                {
                	man=man%n+1;
                	++t;
                    cout << " " << man;
                }
                cout << "\n";
            }
            for (int j = rem; j < m; ++j)
            {
                cout << d;
                for (int l = 0; l < d; ++l)
                {
                	man=man%n+1;
                    cout << " " << man;
                }
                cout << "\n";
            }
        }
        // for (int i = k / 2; i < k; ++i)
        // {
            // int man = n + 1;
            // for (int j = 0; j < rem; ++j)
            // {
                // cout << d+1<<" "<<j+1+i-k/2;
                // for (int l = 0; l < d; ++l)
                    // cout << " " << --man;
                // cout << "\n";
            // }
            // for (int j = rem; j<m; ++j)
            // {
                // cout << d;
                // for (int l = 0; l < d; ++l)
                    // cout << " " << --man;
                // cout << "\n";
            // }
        // }
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1225C - p-binary
1525D - Armchairs
1257A - Two Rival Students
1415A - Prison Break
1271A - Suits
259B - Little Elephant and Magic Square
1389A - LCM Problem
778A - String Game
1382A - Common Subsequence
1512D - Corrupted Array
667B - Coat of Anticubism
284B - Cows and Poker Game
1666D - Deletive Editing
1433D - Districts Connection
2B - The least round way
1324A - Yet Another Tetris Problem
246B - Increase and Decrease
22E - Scheme
1566A - Median Maximization
1278A - Shuffle Hashing
1666F - Fancy Stack
1354A - Alarm Clock
1543B - Customising the Track
1337A - Ichihime and Triangle
1366A - Shovels and Swords
919A - Supermarket
630C - Lucky Numbers
1208B - Uniqueness
1384A - Common Prefixes
371A - K-Periodic Array